package com.flca.frw.interfaces
{
	import mx.collections.ArrayCollection;
	
	public interface IModel
	{
		/**
		 * Use for labelfunctions
		 */ 
		function getLabel(source:Object) : String;

		/**
		 * Use for controlling coumns in datagrid
		 */ 
		function getGridColumns() : Array;
		
		/**
		 * Use for controlling coumns in lookup list
		 */ 
		function getLookupColumns() : Array;

		/**
		 * This method is used to populate a Lookup list
		 */
		function getLookupValues() : ArrayCollection ;

		/**
		 * This method is used create a new Object
		 */
		function makeNew() :void ;
		
		/**
		 * This returns an entity.
		 */
		function getEntity() : Object;
		
		/**
		 * This method is used to return an ArrayCollection that is used to fill
		 * a grid. Normally the return collection will be the same as the source
		 * but for JoinTables the underlying objects may be returned 
		 */
		function assemble(sourceValue:Object) : Object;
	
//		function getMaster() : Object;
	}
}